package com.xxzuibang.day6;

//数组的扩容（添加）
//实现动态的给数组添加元素效果

import java.util.Scanner;

/**
 * 1.原始的数组使用静态分配方式
 * 2.增加的元素4，直接放在数组的最后
 * 3.用户可以通过如下的办法对数组进行操作：是否继续添加，添加成功，是否继续？y/n
 */
public class Demo06 {
    public static void main(String[] args) {
        /**
         * 1.定义一个初始数组arr
         * 2.定义一个新的数组arrNew
         * 3.遍历arr数组，依次将arr的元素拷贝到arrNew数组
         * 4.让4赋给arrNew[arrNew.length-1]=4,把4赋给arrNew的最后一个元素
         * 5.让arr指向arrNew，原来的数组就会销毁
         * 6.创建一个Scanner
         * 7.不知道用户什么时候退出，用do-while break来控制
         */
/*        Scanner sc=new Scanner(System.in);
        int[]  arr={1,2,3};
        do{
            int[] arrNew=new int[arr.length+1];
            //遍历arr数组，一次将arr数组中的元素拷贝到新数组里面
            for (int i = 0; i < arr.length; i++) {
                arrNew[i]=arr[i];

            }
            System.out.println("请输入要添加的元素：");
            int addNum=sc.nextInt();
            //把addNew赋给新数组的最后一个元素
            arrNew[arrNew.length-1]=addNum;
            //让arr指向arrNew
            arr=arrNew;
            System.out.println("arr扩容后的元素情况:");
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            //问用户是否继续
            System.out.println("\n是否继续添加y/n？");
            char key=sc.next().charAt(0);
            if(key=='n'){
                break;
            }
        }while (true);
        System.out.println("你退出了添加");*/

        arr2();


    }


    private static void arr2() {
        //数组的扩容思路：
        //1.定义一个静态初始数组arr
        int[] arr = {1, 2, 3};

        do {
            //2.定义一个新数组arrNew动态可新增
            int[] arrNew = new int[arr.length + 1];
            //3.遍历数组arr，把所有的元素先拷贝到新数组arrNew中
            for (int i = 0; i < arr.length; i++) {
                arrNew[i] = arr[i];
            }
            //4.使用键盘输入语句用户键盘输入想要增加的数
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入要添加的元素：");
            int addNew = sc.nextInt();
            //5.把新添加的数赋给arrNew的最后一个元素
            arrNew[arrNew.length - 1] = addNew;
            //6.把arrNew再赋给arr数组，arr原来的数组销毁，arr存放的是添加后的数组
            arr = arrNew;
            //7.遍历arr数组输出扩容后的内容
            System.out.println("数组扩容后的信息为：");
            System.out.print("[");
            for (int i = 0; i < arr.length; i++) {
                System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ",");
            }
            System.out.println("]");
            System.out.println("您是否要继续添加？y/n");
            char key = sc.next().charAt(0);
            if (key == 'n') {
                break;
            }
        } while (true);

        System.out.println("您退出了添加~");


    }


}
